// 分成两堆之后，就相当于算后手的两堆是否是先手必胜态
// 也就是两个状态的异或值，相当于是一个子问题
#include <iostream>
#include <algorithm>
#include <cstring>
#include <unordered_set>
using namespace std;

const int N = 110;
// f[N]数组用于记忆化搜索
int f[N];
int n;

int sg(int x)
{
    if (f[x] != -1)
        return f[x];
    // 为了避免重复，规定i>=j
    unordered_set<int> S;
    for (int i = 0; i < x; ++i)
        for (int j = 0; j <= i; ++j)
            S.insert(sg(i) ^ sg(j));
    for (int i = 0;; ++i)
        if (!S.count(i))
            return f[x] = i;
}

int main()
{
    memset(f, -1, sizeof f);
    cin >> n;
    int res = 0;
    while (n--)
    {
        int a;
        cin >> a;
        res ^= sg(a);
    }
    if (res)
        cout << "Yes";
    else
        cout << "No";
    return 0;
}
